package vista;

import dao.DAOCliente;
import entidades.Cliente;
import entidades.Localidad;
import java.awt.Color;
import java.util.Iterator;
import java.util.Set;
import javax.swing.JOptionPane;

/**
 * Una instancia de esta clase contendrá las siguientes variables:
 * 
 *  modoVentana:                variable utilizada como parámetro para el modo en el
 *                              cual se utilizará la ventana, AGREGAR para creacion de
 *                              un nuevo cliente o MODIFICAR para modificar un cliente
 *                              existente en el sistema.
 *  cliente:                    instancia de una clase cliente, con la cual trabajará la
 *                              ventana.
 *  hayModificaciones:          variable utilizada como parametro para saber
 *                              si hubo modificaciones del cliente seleccionado
 *                              mientras se utilizó la ventana en modo MODIFICAR.
 *
 */
public class VAltaCliente extends javax.swing.JDialog {

    private enum TipoAccion{
        AGREGAR,
        MODIFICAR;
    }
    TipoAccion modoVentana;
    Cliente cliente;
    boolean hayModificaciones = false;

    /**
    * Creador de la ventana VAltaCliente, la cual se utilizará tanto para 
    * la creacion de un cliente para agregar al sistema, o una modificación de
    * un cliente seleccionado previamente.
    * 
    *   @param parent   elemento que llama a la funcion e instancia esta ventana
    * 
    *   @param cliente  instancia de cliente la cual será nula si la ventana se
    *                   crea en modo AGREGAR, de lo contrario, la instancia 
    *                   cliente contendra la informacion con la que trabajará
    *                   la ventana
    *
    * 
    */
    public VAltaCliente(java.awt.Frame parent, Cliente cliente) {
        super(parent, true);
        initComponents();
                
        if (cliente == null)
            this.modoVentana = TipoAccion.AGREGAR;
        else {
            this.cliente = cliente;
            this.modoVentana = TipoAccion.MODIFICAR;
            
            this.tfApellidoCliente.setText(this.cliente.getApellido());
            this.tfNombreCliente.setText(this.cliente.getNombre());
            
            int index = 0;
            while (!this.cbTipoDoc.getItemAt(index++).toString().equals(this.cliente.getTipoDoc()));
            this.cbTipoDoc.setSelectedIndex(index-1);

            this.tfNroDoc.setText(this.cliente.getNumDoc());
            
            this.tfTelNumero.setText(this.cliente.getTelefono());
            
            this.tfCalle.setText(this.cliente.getCalle());
            this.tfNumeroDomicilio.setText(this.cliente.getNumero().toString());
            this.tfPisoDomicilio.setText(this.cliente.getPiso().toString());
            this.tfDepartamento.setText(this.cliente.getDepartamento());
            
            // recorro el combobox provincia para que coincida con el del inmueble
            index = 0;
            while (!this.cbProvDomicilio.getItemAt(index++).toString().equals(this.cliente.getLocalidadByIdLocalidad().getProvincia().getNombre()));
            this.cbProvDomicilio.setSelectedIndex(index-1);
            
            // cargo las localidades de la provincia del inmueble para realizar una busqueda luego
            index = 0;
            while (!this.cbLocDomicilio.getItemAt(index++).toString().equals(this.cliente.getLocalidadByIdLocalidad().getNombre()));
            this.cbLocDomicilio.setSelectedIndex(index-1);
            
            // recorro el combobox provincia para que coincida con el del inmueble
            index = 0;
            while (!this.cbProvincia.getItemAt(index++).toString().equals(this.cliente.getLocalidadByInmuebleIdLocalidad().getProvincia().getNombre()));
            this.cbProvincia.setSelectedIndex(index-1);
            
            // cargo las localidades de la provincia del inmueble para realizar una busqueda luego
            index = 0;
            while (!this.cbLocalidad.getItemAt(index++).toString().equals(this.cliente.getLocalidadByInmuebleIdLocalidad().getNombre()));
            this.cbLocalidad.setSelectedIndex(index-1);
            
            this.cbTipoInmuebleSolicitado.setSelectedIndex(DAOCliente.getInmuebleTipoEnum(cliente.getInmuebleTipo()).ordinal());
            this.tfMontoDisponible.setText(Float.toString(this.cliente.getInmuebleMontoDisponible()));
            this.taBarrios.setText(cliente.getInmuebleBarrio());
            this.taCaracteristicas.setText(cliente.getInmuebleCaracteristicas());
        }
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        pDatosCliente = new javax.swing.JPanel();
        lApellidoCliente = new javax.swing.JLabel();
        tfApellidoCliente = new javax.swing.JTextField();
        tfNombreCliente = new javax.swing.JTextField();
        lNombreCliente = new javax.swing.JLabel();
        lTipoDoc = new javax.swing.JLabel();
        lNroDoc = new javax.swing.JLabel();
        tfNroDoc = new javax.swing.JTextField();
        cbTipoDoc = new javax.swing.JComboBox();
        tfTelNumero = new javax.swing.JTextField();
        lTelefonoContacto = new javax.swing.JLabel();
        pInmuebleSolicitado = new javax.swing.JPanel();
        lTipoInmuebleSolicitado = new javax.swing.JLabel();
        lProvincia = new javax.swing.JLabel();
        tfMontoDisponible = new javax.swing.JTextField();
        cbProvincia = new javax.swing.JComboBox();
        cbTipoInmuebleSolicitado = new javax.swing.JComboBox();
        lMontoDisponible = new javax.swing.JLabel();
        lLocalidad = new javax.swing.JLabel();
        lBarrios = new javax.swing.JLabel();
        lCaracteristicas = new javax.swing.JLabel();
        spBarrios = new javax.swing.JScrollPane();
        taBarrios = new javax.swing.JTextArea();
        spCaracteristicas = new javax.swing.JScrollPane();
        taCaracteristicas = new javax.swing.JTextArea();
        cbLocalidad = new javax.swing.JComboBox();
        bCancelar = new javax.swing.JButton();
        bGuardar = new javax.swing.JButton();
        pDatosDomicilio = new javax.swing.JPanel();
        lCalle = new javax.swing.JLabel();
        tfCalle = new javax.swing.JTextField();
        lNumeroDomicilio = new javax.swing.JLabel();
        tfNumeroDomicilio = new javax.swing.JTextField();
        lPisoDomicilio = new javax.swing.JLabel();
        tfPisoDomicilio = new javax.swing.JTextField();
        lDepartamento = new javax.swing.JLabel();
        tfDepartamento = new javax.swing.JTextField();
        lProvinciaDomicilio = new javax.swing.JLabel();
        lLocalidadDomicilio = new javax.swing.JLabel();
        cbLocDomicilio = new javax.swing.JComboBox();
        cbProvDomicilio = new javax.swing.JComboBox();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Alta Cliente");

        pDatosCliente.setBorder(javax.swing.BorderFactory.createTitledBorder("Datos Generales"));

        lApellidoCliente.setText("Apellido:");

        tfApellidoCliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tfApellidoClienteActionPerformed(evt);
            }
        });
        tfApellidoCliente.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                tfApellidoClienteKeyTyped(evt);
            }
        });

        tfNombreCliente.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                tfNombreClienteKeyTyped(evt);
            }
        });

        lNombreCliente.setText("Nombre:");

        lTipoDoc.setText("Tipo Doc:");

        lNroDoc.setText("Nro Doc:");

        tfNroDoc.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                tfNroDocKeyTyped(evt);
            }
        });

        cbTipoDoc.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "DNI", "PP", "LC", "LE" }));

        tfTelNumero.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                tfTelNumeroKeyTyped(evt);
            }
        });

        lTelefonoContacto.setText("Teléfono de Contacto:");

        javax.swing.GroupLayout pDatosClienteLayout = new javax.swing.GroupLayout(pDatosCliente);
        pDatosCliente.setLayout(pDatosClienteLayout);
        pDatosClienteLayout.setHorizontalGroup(
            pDatosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pDatosClienteLayout.createSequentialGroup()
                .addGroup(pDatosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pDatosClienteLayout.createSequentialGroup()
                        .addGroup(pDatosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lApellidoCliente)
                            .addComponent(lNombreCliente))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pDatosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(tfNombreCliente)
                            .addComponent(tfApellidoCliente, javax.swing.GroupLayout.DEFAULT_SIZE, 124, Short.MAX_VALUE)))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pDatosClienteLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(lTelefonoContacto)))
                .addGroup(pDatosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pDatosClienteLayout.createSequentialGroup()
                        .addGap(71, 71, 71)
                        .addComponent(lNroDoc)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(tfNroDoc, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(pDatosClienteLayout.createSequentialGroup()
                        .addGap(68, 68, 68)
                        .addComponent(lTipoDoc)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(cbTipoDoc, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(pDatosClienteLayout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addComponent(tfTelNumero, javax.swing.GroupLayout.PREFERRED_SIZE, 185, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pDatosClienteLayout.setVerticalGroup(
            pDatosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pDatosClienteLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pDatosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lApellidoCliente)
                    .addComponent(tfApellidoCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lTipoDoc)
                    .addComponent(cbTipoDoc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pDatosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(tfNombreCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lNombreCliente)
                    .addComponent(lNroDoc)
                    .addComponent(tfNroDoc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 24, Short.MAX_VALUE)
                .addGroup(pDatosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(tfTelNumero, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lTelefonoContacto)))
        );

        pInmuebleSolicitado.setBorder(javax.swing.BorderFactory.createTitledBorder("Inmueble Solicitado"));

        lTipoInmuebleSolicitado.setText("Tipo:");

        lProvincia.setText("Provincia:");

        cbProvincia.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "BUENOS AIRES", "CATAMARCA", "CHACO", "CHUBUT", "CORDOBA", "CORRIENTES", "ENTRE RIOS", "FORMOSA", "JUJUY", "LA PAMPA", "LA RIOJA", "MENDOZA", "MISIONES", "NEUQUEN", "RIO NEGRO", "SALTA", "SAN JUAN", "SAN LUIS", "SANTA CRUZ", "SANTA FE", "SANTIAGO DEL ESTERO", "TIERRA DEL FUEGO", "TUCUMAN" }));
        cbProvincia.setSelectedIndex(-1);
        cbProvincia.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbProvinciaActionPerformed(evt);
            }
        });

        cbTipoInmuebleSolicitado.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Local/Oficina", "Casa", "Departamento", "Terreno", "Quinta", "Galpon" }));
        cbTipoInmuebleSolicitado.setSelectedIndex(-1);

        lMontoDisponible.setText("Monto Disponible: $");

        lLocalidad.setText("Localidad:");

        lBarrios.setText("Barrios:");

        lCaracteristicas.setText("Características:");

        taBarrios.setColumns(20);
        taBarrios.setRows(5);
        spBarrios.setViewportView(taBarrios);

        taCaracteristicas.setColumns(20);
        taCaracteristicas.setRows(5);
        spCaracteristicas.setViewportView(taCaracteristicas);

        cbLocalidad.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Seleccione una Provincia" }));
        cbLocalidad.setEnabled(false);

        javax.swing.GroupLayout pInmuebleSolicitadoLayout = new javax.swing.GroupLayout(pInmuebleSolicitado);
        pInmuebleSolicitado.setLayout(pInmuebleSolicitadoLayout);
        pInmuebleSolicitadoLayout.setHorizontalGroup(
            pInmuebleSolicitadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pInmuebleSolicitadoLayout.createSequentialGroup()
                .addGroup(pInmuebleSolicitadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pInmuebleSolicitadoLayout.createSequentialGroup()
                        .addGroup(pInmuebleSolicitadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(pInmuebleSolicitadoLayout.createSequentialGroup()
                                .addGroup(pInmuebleSolicitadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(lTipoInmuebleSolicitado)
                                    .addComponent(lProvincia))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(pInmuebleSolicitadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(cbTipoInmuebleSolicitado, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(cbProvincia, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                            .addGroup(pInmuebleSolicitadoLayout.createSequentialGroup()
                                .addContainerGap()
                                .addComponent(lBarrios)))
                        .addGap(39, 39, 39)
                        .addGroup(pInmuebleSolicitadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(pInmuebleSolicitadoLayout.createSequentialGroup()
                                .addComponent(lMontoDisponible)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(tfMontoDisponible, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(pInmuebleSolicitadoLayout.createSequentialGroup()
                                .addComponent(lCaracteristicas)
                                .addGap(0, 0, Short.MAX_VALUE))
                            .addGroup(pInmuebleSolicitadoLayout.createSequentialGroup()
                                .addComponent(lLocalidad)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(cbLocalidad, 0, 170, Short.MAX_VALUE))))
                    .addGroup(pInmuebleSolicitadoLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(spBarrios, javax.swing.GroupLayout.PREFERRED_SIZE, 202, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(spCaracteristicas)))
                .addContainerGap())
        );
        pInmuebleSolicitadoLayout.setVerticalGroup(
            pInmuebleSolicitadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pInmuebleSolicitadoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pInmuebleSolicitadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lTipoInmuebleSolicitado)
                    .addComponent(tfMontoDisponible, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(cbTipoInmuebleSolicitado, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lMontoDisponible))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pInmuebleSolicitadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lProvincia)
                    .addComponent(cbProvincia, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lLocalidad)
                    .addComponent(cbLocalidad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(pInmuebleSolicitadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lBarrios)
                    .addComponent(lCaracteristicas))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pInmuebleSolicitadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(spBarrios)
                    .addGroup(pInmuebleSolicitadoLayout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(spCaracteristicas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );

        bCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/iconos/close_16.png"))); // NOI18N
        bCancelar.setText("Cancelar");
        bCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bCancelarActionPerformed(evt);
            }
        });

        bGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/iconos/disk.png"))); // NOI18N
        bGuardar.setText("Guardar");
        bGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bGuardarActionPerformed(evt);
            }
        });

        pDatosDomicilio.setBorder(javax.swing.BorderFactory.createTitledBorder("Domicilio"));

        lCalle.setText("Calle:");

        tfCalle.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tfCalleActionPerformed(evt);
            }
        });
        tfCalle.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                tfCalleKeyTyped(evt);
            }
        });

        lNumeroDomicilio.setText("N°:");

        tfNumeroDomicilio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tfNumeroDomicilioActionPerformed(evt);
            }
        });
        tfNumeroDomicilio.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                tfNumeroDomicilioKeyTyped(evt);
            }
        });

        lPisoDomicilio.setText("Piso:");

        tfPisoDomicilio.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                tfPisoDomicilioKeyTyped(evt);
            }
        });

        lDepartamento.setText("Depto:");

        tfDepartamento.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tfDepartamentoActionPerformed(evt);
            }
        });

        lProvinciaDomicilio.setText("Provincia:");

        lLocalidadDomicilio.setText("Localidad:");

        cbLocDomicilio.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Seleccione una Provincia" }));
        cbLocDomicilio.setEnabled(false);

        cbProvDomicilio.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "BUENOS AIRES", "CATAMARCA", "CHACO", "CHUBUT", "CORDOBA", "CORRIENTES", "ENTRE RIOS", "FORMOSA", "JUJUY", "LA PAMPA", "LA RIOJA", "MENDOZA", "MISIONES", "NEUQUEN", "RIO NEGRO", "SALTA", "SAN JUAN", "SAN LUIS", "SANTA CRUZ", "SANTA FE", "SANTIAGO DEL ESTERO", "TIERRA DEL FUEGO", "TUCUMAN" }));
        cbProvDomicilio.setSelectedIndex(-1);
        cbProvDomicilio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbProvDomicilioActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout pDatosDomicilioLayout = new javax.swing.GroupLayout(pDatosDomicilio);
        pDatosDomicilio.setLayout(pDatosDomicilioLayout);
        pDatosDomicilioLayout.setHorizontalGroup(
            pDatosDomicilioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pDatosDomicilioLayout.createSequentialGroup()
                .addGroup(pDatosDomicilioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pDatosDomicilioLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(lCalle)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(tfCalle, javax.swing.GroupLayout.PREFERRED_SIZE, 174, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(pDatosDomicilioLayout.createSequentialGroup()
                        .addComponent(lProvinciaDomicilio)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(cbProvDomicilio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 16, Short.MAX_VALUE)
                .addGroup(pDatosDomicilioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pDatosDomicilioLayout.createSequentialGroup()
                        .addComponent(lNumeroDomicilio)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(tfNumeroDomicilio, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(lPisoDomicilio)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(tfPisoDomicilio, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(lDepartamento)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(tfDepartamento, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(pDatosDomicilioLayout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(lLocalidadDomicilio)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(cbLocDomicilio, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        pDatosDomicilioLayout.setVerticalGroup(
            pDatosDomicilioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pDatosDomicilioLayout.createSequentialGroup()
                .addGroup(pDatosDomicilioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lCalle)
                    .addComponent(tfCalle, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lNumeroDomicilio)
                    .addComponent(tfNumeroDomicilio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lPisoDomicilio)
                    .addComponent(tfPisoDomicilio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lDepartamento)
                    .addComponent(tfDepartamento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pDatosDomicilioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lProvinciaDomicilio)
                    .addComponent(lLocalidadDomicilio)
                    .addComponent(cbLocDomicilio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(cbProvDomicilio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(pDatosCliente, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(pInmuebleSolicitado, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(bGuardar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(bCancelar)
                .addContainerGap())
            .addComponent(pDatosDomicilio, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(pDatosCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(pDatosDomicilio, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(pInmuebleSolicitado, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(bCancelar)
                    .addComponent(bGuardar))
                .addContainerGap())
        );

        pDatosDomicilio.getAccessibleContext().setAccessibleName("Datos Domicilio");

        pack();
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents

    private void bGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bGuardarActionPerformed
        // Inicializacion de las variables obligatorias
        String apellido = null;
        String nombre = null;
        String tipoDoc = null;
        String numDoc = null;
        String calle = null;
        float monto_disponible = 0;

        // Inicializacion de las variables no obligatorias
        String telefono = this.tfTelNumero.getText();
        String departamento = this.tfDepartamento.getText();
        int numero = 0;
        byte piso = 0;
        try {
            if (!this.tfNumeroDomicilio.getText().isEmpty())
                numero = Integer.parseInt(this.tfNumeroDomicilio.getText()); 
            if (!this.tfPisoDomicilio.getText().isEmpty())
                piso = Byte.parseByte(this.tfPisoDomicilio.getText());
        }
        catch (Exception e) {
            JOptionPane.showMessageDialog(this, "El piso o nro de departamento no son números", "¡Error de conversión!", JOptionPane.ERROR_MESSAGE);
            return;
        }

        //Chequeo de las variables importantes
        if(this.tfApellidoCliente.getText().isEmpty()) {
            JOptionPane.showMessageDialog(this, "El cliente debe poseer apellido", "Error! Apellido cliente", JOptionPane.ERROR_MESSAGE);
            this.tfApellidoCliente.setForeground(Color.red);
            return;
        }
        if(this.tfNombreCliente.getText().isEmpty()) {
            JOptionPane.showMessageDialog(this, "El cliente debe poseer nombre", "Error! Nombre cliente", JOptionPane.ERROR_MESSAGE);
            this.tfNombreCliente.setForeground(Color.red);
            return;
        }
        if(this.tfNroDoc.getText().isEmpty()) {
            JOptionPane.showMessageDialog(this, "El cliente debe poseer numero de documento", "Error! Numero documento del cliente", JOptionPane.ERROR_MESSAGE);
            this.tfNroDoc.setForeground(Color.red);
            return;
        }
        if(this.tfCalle.getText().isEmpty()) {
            JOptionPane.showMessageDialog(this, "Debe ingresar una calle de domicilio valida", "Error! Domicilio cliente", JOptionPane.ERROR_MESSAGE);
            this.tfCalle.setForeground(Color.red);
            return;
        }
        if(this.tfMontoDisponible.getText().isEmpty()) {
            JOptionPane.showMessageDialog(this, "El monto disponible debe ser un número", "Error! Rango inferior del precio", JOptionPane.ERROR_MESSAGE);
            this.tfMontoDisponible.setForeground(Color.red);
            return;
        }

        if (this.cbLocDomicilio.getSelectedIndex() == -1) {
            JOptionPane.showMessageDialog(this, "Debe seleccionar una localidad para el CLiente", "¡Error! Seleccione una Localidad", JOptionPane.ERROR_MESSAGE);
            this.cbLocDomicilio.setForeground(Color.red);
            return;
        }
        
        if (this.cbLocalidad.getSelectedIndex() == -1) {
            JOptionPane.showMessageDialog(this, "Debe seleccionar una localidad para el CLiente", "¡Error! Seleccione una Localidad", JOptionPane.ERROR_MESSAGE);
            this.cbLocalidad.setForeground(Color.red);
            return;
        }
        
        if (this.cbTipoInmuebleSolicitado.getSelectedIndex() == -1) {
            JOptionPane.showMessageDialog(this, "Debe seleccionar un tipo de inmueble", "¡Error! Seleccione un Tipo de Inmueble", JOptionPane.ERROR_MESSAGE);
            this.cbTipoInmuebleSolicitado.setForeground(Color.red);
            return;
        }
        
        int tipo_inmueble = this.cbTipoInmuebleSolicitado.getSelectedIndex();
        String inmuebleBarrios = this.taBarrios.getText();
        String inmuebleCaracteristicas = this.taCaracteristicas.getText();

        // almaceno los datos ingresados en variables locales
        apellido = this.tfApellidoCliente.getText();
        this.tfApellidoCliente.setForeground(Color.black);

        nombre = this.tfNombreCliente.getText();
        this.tfNombreCliente.setForeground(Color.black);
        
        tipoDoc = this.cbTipoDoc.getSelectedItem().toString();
        this.cbTipoDoc.setForeground(Color.black);
        
        numDoc = this.tfNroDoc.getText();
        this.tfNroDoc.setForeground(Color.black);
        
        calle = this.tfCalle.getText();
        this.tfCalle.setForeground(Color.black);
      
        monto_disponible = Float.parseFloat(this.tfMontoDisponible.getText());
        this.tfMontoDisponible.setForeground(Color.black);
        
        // Localidad del cliente
        Object[] localidades = VPrincipal.provincias.get(this.cbProvDomicilio.getSelectedIndex()).getLocalidads().toArray();
        Localidad localidadCliente = (Localidad) localidades[this.cbLocDomicilio.getSelectedIndex()];

        //Provincia y localidad del inmueble que desea
        localidades = VPrincipal.provincias.get(this.cbProvincia.getSelectedIndex()).getLocalidads().toArray();
        Localidad localidad = (Localidad) localidades[this.cbLocalidad.getSelectedIndex()];


        //Código de los diferentes modos de ventana
        if (this.modoVentana == TipoAccion.AGREGAR){
        //Si el modo es agregar seteo el Cliente de la ventana (que esta en null)
            this.cliente = new Cliente();
            this.cliente.setLocalidadByIdLocalidad(localidadCliente);
            this.cliente.setLocalidadByInmuebleIdLocalidad(localidad);
            this.cliente.setApellido(apellido);
            this.cliente.setNombre(nombre);
            this.cliente.setTipoDoc(tipoDoc);
            this.cliente.setNumDoc(numDoc);
            this.cliente.setCalle(calle);
            this.cliente.setTelefono(telefono);
            this.cliente.setNumero(numero);
            this.cliente.setPiso(piso);
            this.cliente.setDepartamento(departamento);
            this.cliente.setInmuebleTipo(DAOCliente.setInmuebleTipoEnum(tipo_inmueble));
            this.cliente.setInmuebleMontoDisponible(monto_disponible);
            this.cliente.setInmuebleBarrio(inmuebleBarrios);
            this.cliente.setInmuebleCaracteristicas(inmuebleCaracteristicas);
            
            DAOCliente.insert(this.cliente);
            System.out.println("Datos Agregado");
            this.dispose();
        }
        else {
        //Si el modo de la ventana es modificar, chequeo de campos modificados
            if (this.cliente.getLocalidadByIdLocalidad().getIdLocalidad() != localidadCliente.getIdLocalidad()) {
                this.cliente.setLocalidadByIdLocalidad(localidadCliente);
                this.hayModificaciones = true;
            }
            
            if (this.cliente.getLocalidadByInmuebleIdLocalidad().getIdLocalidad() != localidad.getIdLocalidad()) {
                this.cliente.setLocalidadByInmuebleIdLocalidad(localidad);
                this.hayModificaciones = true;
            }
            
            if ((this.cliente.getApellido().compareTo(apellido))!=0){
                this.cliente.setApellido(apellido);
                this.hayModificaciones = true;
            }
            if ((this.cliente.getNombre().compareTo(nombre))!=0){
                this.cliente.setNombre(nombre);
                this.hayModificaciones = true;
            }
            if ((this.cliente.getTipoDoc().compareTo(tipoDoc))!=0){
                this.cliente.setTipoDoc(tipoDoc);
                this.hayModificaciones = true;
            }
            if ((this.cliente.getNumDoc().compareTo(numDoc))!=0){
                this.cliente.setNumDoc(numDoc);
                this.hayModificaciones = true;
            }
            if ((this.cliente.getTelefono().compareTo(telefono))!=0){
                this.cliente.setTelefono(telefono);
                this.hayModificaciones = true;
            }
            if ((this.cliente.getCalle().compareTo(calle))!=0){
                this.cliente.setCalle(calle);
                this.hayModificaciones = true;
            }
            if (this.cliente.getNumero()!= numero){
                this.cliente.setNumero(numero);
                this.hayModificaciones = true;
            }
            if (this.cliente.getPiso()!=(byte)piso){
                this.cliente.setPiso((byte)piso);
                this.hayModificaciones = true;
            }
            if ((this.cliente.getDepartamento().compareTo(departamento))!=0){
                this.cliente.setDepartamento(departamento);
                this.hayModificaciones = true;
            }
            if ((this.cliente.getInmuebleTipo().compareTo(DAOCliente.setInmuebleTipoEnum(tipo_inmueble)))!=0){
                this.cliente.setInmuebleTipo(DAOCliente.setInmuebleTipoEnum(tipo_inmueble));
                this.hayModificaciones = true;
            }
            if (this.cliente.getInmuebleMontoDisponible()!=monto_disponible){
                this.cliente.setInmuebleMontoDisponible(monto_disponible);
                this.hayModificaciones = true;
            }
            if ((this.cliente.getInmuebleBarrio().compareTo(inmuebleBarrios))!=0){
                this.cliente.setInmuebleBarrio(inmuebleBarrios);
                this.hayModificaciones = true;
            }
            if ((this.cliente.getInmuebleCaracteristicas().compareTo(inmuebleCaracteristicas))!=0){
                this.cliente.setInmuebleCaracteristicas(inmuebleCaracteristicas);
                this.hayModificaciones = true;
            }
            //Guardo los cambios
            if (this.hayModificaciones){
                DAOCliente.guardarOActualizarObjeto(this.cliente);
                System.out.println("Datos Modificado");
            }
            this.dispose();
        }
    }//GEN-LAST:event_bGuardarActionPerformed

    private void cbTipoDocActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbTipoDocActionPerformed
        
    }//GEN-LAST:event_cbTipoDocActionPerformed

    private void tfCalleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tfCalleActionPerformed
        
    }//GEN-LAST:event_tfCalleActionPerformed

    private void tfNumeroDomicilioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tfNumeroDomicilioActionPerformed
        
    }//GEN-LAST:event_tfNumeroDomicilioActionPerformed

    private void tfDepartamentoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tfDepartamentoActionPerformed
        
    }//GEN-LAST:event_tfDepartamentoActionPerformed

    /**
    * Evento que se realiza una vez seleccionada la provincia en el combobox
    * correspondiente a la provincia del domicilio del cliente.
    * Al seleccionar la provincia, se habilitará el combobox de localidad con
    * el listado de localidades de la provincia seleccionada, para que el usuario
    * pueda seleccionar la correspondiente al domicilio del cliente.
    *
    */
    private void cbProvDomicilioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbProvDomicilioActionPerformed
        int provincia_seleccionada = cbProvDomicilio.getSelectedIndex();
        
        Set localidades = VPrincipal.provincias.get(provincia_seleccionada).getLocalidads();
        Iterator i = localidades.iterator();
        
        cbLocDomicilio.removeAllItems();
        
        while(i.hasNext()) {
            this.cbLocDomicilio.addItem(((Localidad) i.next()).getNombre());
        }

        this.cbLocDomicilio.setSelectedIndex(-1);
        this.cbLocDomicilio.setEnabled(true);
    }//GEN-LAST:event_cbProvDomicilioActionPerformed

    /**
    * Evento que se realiza una vez seleccionada la provincia en el combobox
    * correspondiente a la provincia en la cual el cliente desea que se encuentre
    * el inmueble de preferencia.
    * Al seleccionar la provincia, se habilitará el combobox de localidad con
    * el listado de localidades de la provincia seleccionada, para que el usuario
    * pueda seleccionar la correspondiente.
    *
    * 
    */
    private void cbProvinciaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbProvinciaActionPerformed
        int provincia_seleccionada = cbProvincia.getSelectedIndex();
        
        Set localidades = VPrincipal.provincias.get(provincia_seleccionada).getLocalidads();
        Iterator i = localidades.iterator();
        
        cbLocalidad.removeAllItems();
        
        while(i.hasNext()) {
            this.cbLocalidad.addItem(((Localidad) i.next()).getNombre());
        }

        this.cbLocalidad.setSelectedIndex(-1);
        this.cbLocalidad.setEnabled(true);
    }//GEN-LAST:event_cbProvinciaActionPerformed

    private void tfApellidoClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tfApellidoClienteActionPerformed
    }//GEN-LAST:event_tfApellidoClienteActionPerformed

    private void bCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bCancelarActionPerformed
        this.dispose();
    }//GEN-LAST:event_bCancelarActionPerformed

    private void tfTelNumeroKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tfTelNumeroKeyTyped
        if (this.tfTelNumero.getText().length() == 8)
            evt.consume();
    }//GEN-LAST:event_tfTelNumeroKeyTyped

    private void tfNombreClienteKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tfNombreClienteKeyTyped
        if (this.tfNombreCliente.getText().length() == 30)
            evt.consume();
    }//GEN-LAST:event_tfNombreClienteKeyTyped

    private void tfApellidoClienteKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tfApellidoClienteKeyTyped
        if (this.tfApellidoCliente.getText().length() == 30)
            evt.consume();
    }//GEN-LAST:event_tfApellidoClienteKeyTyped

    private void tfCalleKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tfCalleKeyTyped
        if (this.tfCalle.getText().length() == 30)
            evt.consume();
    }//GEN-LAST:event_tfCalleKeyTyped

    private void tfPisoDomicilioKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tfPisoDomicilioKeyTyped
        if (this.tfPisoDomicilio.getText().length() == 4)
            evt.consume();
    }//GEN-LAST:event_tfPisoDomicilioKeyTyped

    private void tfNumeroDomicilioKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tfNumeroDomicilioKeyTyped
        if (this.tfNumeroDomicilio.getText().length() == 6)
            evt.consume();
    }//GEN-LAST:event_tfNumeroDomicilioKeyTyped

    private void tfNroDocKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tfNroDocKeyTyped
        if (this.tfNroDoc.getText().length() == 12)
            evt.consume();
    }//GEN-LAST:event_tfNroDocKeyTyped

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(VAltaCliente.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(VAltaCliente.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(VAltaCliente.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(VAltaCliente.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the dialog */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                VAltaCliente dialog = new VAltaCliente(new javax.swing.JFrame(), null);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    @Override
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton bCancelar;
    private javax.swing.JButton bGuardar;
    private javax.swing.JComboBox cbLocDomicilio;
    private javax.swing.JComboBox cbLocalidad;
    private javax.swing.JComboBox cbProvDomicilio;
    private javax.swing.JComboBox cbProvincia;
    private javax.swing.JComboBox cbTipoDoc;
    private javax.swing.JComboBox cbTipoInmuebleSolicitado;
    private javax.swing.JLabel lApellidoCliente;
    private javax.swing.JLabel lBarrios;
    private javax.swing.JLabel lCalle;
    private javax.swing.JLabel lCaracteristicas;
    private javax.swing.JLabel lDepartamento;
    private javax.swing.JLabel lLocalidad;
    private javax.swing.JLabel lLocalidadDomicilio;
    private javax.swing.JLabel lMontoDisponible;
    private javax.swing.JLabel lNombreCliente;
    private javax.swing.JLabel lNroDoc;
    private javax.swing.JLabel lNumeroDomicilio;
    private javax.swing.JLabel lPisoDomicilio;
    private javax.swing.JLabel lProvincia;
    private javax.swing.JLabel lProvinciaDomicilio;
    private javax.swing.JLabel lTelefonoContacto;
    private javax.swing.JLabel lTipoDoc;
    private javax.swing.JLabel lTipoInmuebleSolicitado;
    private javax.swing.JPanel pDatosCliente;
    private javax.swing.JPanel pDatosDomicilio;
    private javax.swing.JPanel pInmuebleSolicitado;
    private javax.swing.JScrollPane spBarrios;
    private javax.swing.JScrollPane spCaracteristicas;
    private javax.swing.JTextArea taBarrios;
    private javax.swing.JTextArea taCaracteristicas;
    private javax.swing.JTextField tfApellidoCliente;
    private javax.swing.JTextField tfCalle;
    private javax.swing.JTextField tfDepartamento;
    private javax.swing.JTextField tfMontoDisponible;
    private javax.swing.JTextField tfNombreCliente;
    private javax.swing.JTextField tfNroDoc;
    private javax.swing.JTextField tfNumeroDomicilio;
    private javax.swing.JTextField tfPisoDomicilio;
    private javax.swing.JTextField tfTelNumero;
    // End of variables declaration//GEN-END:variables
}
